package com.easylinkin.linkappapi.alarm.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.alarm.entity.AlarmNotice;
import com.easylinkin.linkappapi.device.entity.Device;
import com.easylinkin.linkappapi.ruleengine.entity.RuleExecution;
import com.easylinkin.linkappapi.security.entity.LinkappUser;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 告警通知日志 Mapper 接口
 * </p>
 *
 * @author TongJie
 * @since 2020-05-14
 */
public interface AlarmNoticeMapper extends BaseMapper<AlarmNotice> {


    /**
     * 查询告警通知并分页
     *
     * @param page 分页参数
     * @param alarmNotice dto
     * @return 告警通知查询结果
     */
    IPage<AlarmNotice> getAlarmNotices(Page page, @Param("alarmNotice") AlarmNotice alarmNotice);

    List<AlarmNotice> getAlarmNotices(@Param("alarmNotice") AlarmNotice alarmNotice);

    /**
     * 查询所有通知人
     *
     * @param alarmNotice dto
     * @return 查询结果
     */
    List<LinkappUser> getNoticeUser(@Param("alarmNotice") AlarmNotice alarmNotice);

    /**
     * 根据告警查询出所有的通知
     */
//    List<AlarmNotice> getNoticeByAlarm(@Param("alarm") Alarm alarm);


    /**
     * 获取待插入的 告警通知，不是从 告警通知表查得的
     *
     * @param ruleExecution 执行器 vo
     */

    List<AlarmNotice> getWaitInsertAlarmNotices(@Param("ruleExecution") RuleExecution ruleExecution, @Param("device") Device device);

    /**
     * 获取待插入的 告警通知，不是从 告警通知表查得的
     * 关联的租户下用户
     * @param ruleExecution 执行器 vo
     * @param device 设备信息
     * @return 告警通知
     */
    List<AlarmNotice> getWaitInsertAlarmNoticesTenant(@Param("ruleExecution") RuleExecution ruleExecution, @Param("device") Device device);
}
